/*
 * @Descripttion: 
 * @Author: liuYaoYu
 * @Date: 2021-12-13 11:02:37
 * @LastEditors: liuYaoYu
 * @LastEditTime: 2021-12-13 11:19:47
 */
package main

import (
	"fmt"
)
func sum(n1 int , n2 int) int {
	// 类似于js 的宏微任务
	// 当执行到defer时，暂时不执行，会将defer后面的代码压入到defer栈中
	//当函数执行完毕之后 会执行defer栈 按照先入后出的方式出站，执行
	defer fmt.Println("ok n1=",n1)//3细节 压入栈的时候 会把值拷贝一份 压入 不会改变
	defer fmt.Println("ok n2=",n2)//2 细节 压入栈的时候 会把值拷贝一份 压入 不会改变
	n1++
	n2++
	res:=n1+n2
	fmt.Println("ok3 res=",res)//1  
	return res
}

func main(){
	//defer 关键字 就是说 函数执行完之后 及时 defer释放资源
	res:=sum(1,2)
	fmt.Println("res=",res)//4
}